docs: split version-agnostic OpenShell lifecycle guidance#1263
docs: split version-agnostic OpenShell lifecycle guidance#1263miyoungc merged 16 commits intoNVIDIA:mainfrom
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds documentation and runtime notices documenting NemoClaw 0.1.0’s OpenShell compatibility (pinned to OpenShell 0.0.7). Implements an OpenShell compatibility checker and notice in Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant NemoClawCLI as NemoClaw CLI
participant OpenShellCLI as OpenShell CLI
participant Gateway as Gateway/Runtime
User->>NemoClawCLI: run `nemoclaw onboard`
NemoClawCLI->>OpenShellCLI: query `openshell --version` (may be absent)
OpenShellCLI-->>NemoClawCLI: returns version (or no response)
NemoClawCLI->>NemoClawCLI: compute compatibility notice (getOpenshellCompatibilityNotice)
NemoClawCLI->>User: print notice (info or warning)
NemoClawCLI->>Gateway: start / reuse gateway with gatewayEnv.IMAGE_TAG
Gateway-->>NemoClawCLI: gateway status (health/polling)
NemoClawCLI->>User: onboarding progress / success
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
docs/reference/commands.md (1)
69-69: Switch the validation clause to active voice.Line 69 uses passive voice (“was validated against”); docs style requires active wording.
As per coding guidelines:
docs/**: Active voice required. Flag passive constructions.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/reference/commands.md` at line 69, The sentence uses passive voice ("NemoClaw 0.1.0 was validated against"); change it to active voice by rewriting the clause to something like "than the OpenShell release that NemoClaw 0.1.0 validates against" (locate the sentence containing "NemoClaw 0.1.0 was validated against" in docs/reference/commands.md and replace that passive clause with an active construction referencing NemoClaw 0.1.0 validating the release).docs/get-started/quickstart.md (1)
57-57: Use active, present-tense phrasing for the compatibility baseline.Line 57 uses passive past tense (“was validated”), which conflicts with the docs style requirements.
As per coding guidelines:
docs/**: Active voice required. Flag passive constructions.anddocs/**: Present tense. Flag future tense ("will") in descriptions of current behavior.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/get-started/quickstart.md` at line 57, Summary: The compatibility sentence uses passive past tense; change it to active present-tense. Replace the current text "NemoClaw 0.1.0 was validated with OpenShell 0.0.7." with an active present-tense phrasing such as "NemoClaw 0.1.0 works with OpenShell 0.0.7." or "NemoClaw 0.1.0 validates against OpenShell 0.0.7." Update that single sentence in the quickstart paragraph to use active voice and present tense to comply with the docs style rules.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@bin/lib/onboard.js`:
- Around line 2159-2161: The compatibility notice loop using
getOpenshellCompatibilityNotice(gatewayEnv.IMAGE_TAG || null) is never reached
when startGatewayWithOptions returns early on healthy reuse; move or duplicate
the notice emission so it always runs regardless of gateway reuse. Specifically,
call getOpenshellCompatibilityNotice and log each line before invoking
startGatewayWithOptions (or ensure startGatewayWithOptions invokes a
callback/hook that prints the same lines on both new-start and healthy-reuse
paths) so the lifecycle boundary message is always printed.
- Around line 522-528: The getOpenshellCompatibilityNotice function currently
always returns informational text; update it to detect incompatible OpenShell
versions by comparing the passed version (version param) against the supported
NemoClaw↔OpenShell mapping (e.g., a supportedVersions array or mapping constant
you add) using semantic version checks (semver.satisfies or equivalent) and
return a warning message (or an array with a prominent warning line) when the
version does not satisfy the supported range; keep the existing informational
lines when compatible and ensure the function still handles null/unknown version
by returning a neutral notice.
---
Nitpick comments:
In `@docs/get-started/quickstart.md`:
- Line 57: Summary: The compatibility sentence uses passive past tense; change
it to active present-tense. Replace the current text "NemoClaw 0.1.0 was
validated with OpenShell 0.0.7." with an active present-tense phrasing such as
"NemoClaw 0.1.0 works with OpenShell 0.0.7." or "NemoClaw 0.1.0 validates
against OpenShell 0.0.7." Update that single sentence in the quickstart
paragraph to use active voice and present tense to comply with the docs style
rules.
In `@docs/reference/commands.md`:
- Line 69: The sentence uses passive voice ("NemoClaw 0.1.0 was validated
against"); change it to active voice by rewriting the clause to something like
"than the OpenShell release that NemoClaw 0.1.0 validates against" (locate the
sentence containing "NemoClaw 0.1.0 was validated against" in
docs/reference/commands.md and replace that passive clause with an active
construction referencing NemoClaw 0.1.0 validating the release).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: be09412d-9cfa-43b7-bc2c-f24b389173bc
📒 Files selected for processing (6)
README.mdbin/lib/onboard.jsdocs/about/how-it-works.mddocs/get-started/quickstart.mddocs/reference/commands.mdtest/onboard.test.js
|
✨ Thanks for submitting this pull request, which proposes a way to improve the documentation and onboarding process for NemoClaw with OpenShell. Possibly related open issues:
|
There was a problem hiding this comment.
@13ernkastel Thanks for putting this togethe, the OPENSHELL_COMPATIBILITY map, the helper decomposition, and the structural ordering test are all well thought out. This is a solid foundation for addressing #1261.
I've gone through the diff in detail and have a few findings below, grouped by priority.
Must fix
1. npm update -g openshell is missing from the code notices
The docs (README, quickstart, commands.md) list 4 dangerous commands, but the CLI warning and informational notices only list 3 — npm update -g openshell is missing from the code output. This is arguably the most common accidental upgrade path.
Docs say:
Avoid
openshell self-update,npm update -g openshell,openshell gateway start --recreate, oropenshell sandbox create
Code says:
Avoid
openshell self-update,openshell gateway start --recreate, oropenshell sandbox create
Both getOpenshellCompatibilityNotice return paths need npm update -g openshell added.
2. Passive voice still unfixed (CodeRabbit flagged this)
- quickstart.md: "NemoClaw 0.1.0 was validated with OpenShell 0.0.7"
- commands.md: "was validated against"
Repo docs style requires active voice. Suggest: "NemoClaw 0.1.0 requires OpenShell 0.0.7" or "NemoClaw 0.1.0 targets OpenShell 0.0.7".
3. No test that NEMOCLAW_VERSION exists in OPENSHELL_COMPATIBILITY
If someone bumps package.json to 0.2.0 without updating the map, getSupportedOpenshellVersions() returns [], formatSupportedOpenshellVersions([]) returns null, and the condition version && supportedLabel && !isSupportedOpenshellVersion(...) is always false. The entire compatibility check silently does nothing. A one-line test would prevent this:
it("tracks the current NemoClaw version in the compatibility map", () => {
const { version } = require("../../package.json");
expect(getSupportedOpenshellVersions(version).length).toBeGreaterThan(0);
});4. .agents/skills/nemoclaw-overview/references/how-it-works.md still has the old guidance
The PR updates docs/about/how-it-works.md but there's a duplicate at .agents/skills/nemoclaw-overview/references/how-it-works.md that still says:
"For users without an existing OpenClaw installation, NemoClaw recommends
openshell sandbox createdirectly rather than forcing a plugin-driven bootstrap."
This directly contradicts the PR's intent. An AI agent referencing this skill file would give users the old, dangerous advice.
Should fix
5. Mismatch warning goes to console.log (stdout) instead of console.warn (stderr)
The compatibility warning is printed via console.log. For CI/CD pipelines and scripts that parse stdout, this mixes warnings into normal output. The mismatch path should use console.warn or console.error so it goes to stderr. The informational (happy-path) notice is fine on stdout.
6. Informational notice is noisy on the happy path
When versions match, users see 2 lines of "everything is fine but here's a reminder" output on every onboard:
OpenShell compatibility: NemoClaw derives the gateway image from the installed openshell CLI (0.0.7).
Use `nemoclaw onboard` to recreate NemoClaw-managed sandboxes, and avoid ...
Consider making the happy path silent (or a single short line like ✓ OpenShell 0.0.7 (compatible)) and only being verbose when there's a problem.
7. Null version notice should be more explicit
When openshell -V fails, the notice says "NemoClaw derives the gateway image from the installed openshell CLI" — a calm informational message. A missing/broken OpenShell during onboard is itself a problem. Consider: "Could not detect installed OpenShell version — verify openshell -V works before proceeding."
Minor / follow-up
8. formatSupportedOpenshellVersions grammar for 2-item lists
For ["0.0.7", "0.0.8"] it returns "0.0.7, or 0.0.8" — the comma before "or" is incorrect with only 2 items. Should be "0.0.7 or 0.0.8". Oxford comma applies for 3+ items only.
9. Structural source-code test is fragile
The test that regex-matches startGatewayWithOptions function body and uses indexOf to verify ordering is clever but brittle. A rename or refactor breaks the test without breaking the feature. Consider an integration-style test that captures console output instead.
10. Pre-release versions in package.json silently disable the check
If package.json ever has "0.2.0-beta.1", the map lookup returns undefined and the check silently disables (same root cause as #3 but via a different trigger).
Overall this is heading in the right direction. Thanks again for the thorough work here.
|
@prekshivyas thanks for the detailed review. I pushed a follow-up that merges the latest
I also updated the generated Validation I ran locally in the updated branch:
Thanks again for the thorough feedback. |
Signed-off-by: 13ernkastel <LennonCMJ@live.com>
prekshivyas
left a comment
There was a problem hiding this comment.
Thanks @13ernkastel — all 10 items from the previous review are addressed. Nice work on the turnaround.
Quick summary of what was fixed in d55083c7:
npm update -g openshellconsistency — extractedOPENSHELL_DIRECT_COMMANDSconstant so docs and code list the same 4 commands everywhere- Passive voice — "was validated with" → "supports" across README, quickstart, and commands.md
- Version map guard test — test reads package.json and asserts the current version exists in
OPENSHELL_COMPATIBILITY, so a version bump without updating the map fails CI - Stale
.agents/skills/copy — updated to match the new "OpenShell-backed lifecycle" guidance (plus several other skill files updated for consistency) - Warning to stderr —
getOpenshellCompatibilityLevel()routes mismatches throughconsole.warn, happy path stays onconsole.log - Happy path noise — collapsed to a single line when versions match
- Null version handling — now explicitly warns "Could not detect the installed openshell CLI version"
- 2-item grammar —
"0.0.7 or 0.0.8"(no errant comma), with tests for 1, 2, and 3-item lists - Fragile structural test replaced — integration test spawns a real child process with a mock openshell binary, verifies output ordering at runtime
- Pre-release version support —
parseSemveraccepts[-+]suffixes,getSupportedOpenshellVersionsnormalizes before map lookup, test confirms"0.1.0-beta.1"resolves correctly
The missing-map-entry case now also emits an explicit warning ("does not declare a supported OpenShell baseline") instead of silently disabling the check — good defensive addition.
Only remaining item is --strict enforcement for CI, which we agreed is a follow-up. LGTM.
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
.agents/skills/nemoclaw-reference/references/commands.md (1)
1-249:⚠️ Potential issue | 🔴 CriticalDo not edit autogenerated skill files directly.
This file is autogenerated by
scripts/docs-to-skills.pyand should not be edited directly.
The corresponding source filedocs/reference/commands.mdis included in this PR.
After updating the source file, regenerate the skills usingpython scripts/docs-to-skills.py.As per coding guidelines: "Files in .agents/skills/nemoclaw-/.md are autogenerated by scripts/docs-to-skills.py and must never be edited directly" and "Edit documentation under
docs/directory (never.agents/skills/nemoclaw-*/*.md) and regenerate skills withpython scripts/docs-to-skills.py".🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/nemoclaw-reference/references/commands.md around lines 1 - 249, The PR edited an autogenerated skill file (.agents/skills/nemoclaw-reference/references/commands.md) which must not be modified directly; revert any changes to that file and instead update the canonical source docs/reference/commands.md, then run the generation script scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) to regenerate .agents/skills/nemoclaw-reference/references/commands.md so the change flows through the proper build step..agents/skills/nemoclaw-deploy-remote/SKILL.md (1)
1-188:⚠️ Potential issue | 🔴 CriticalDo not edit autogenerated skill files directly.
This file is autogenerated by
scripts/docs-to-skills.pyand should not be edited directly.
Make changes to the corresponding source file underdocs/and regenerate the skills usingpython scripts/docs-to-skills.py.As per coding guidelines: "Files in .agents/skills/nemoclaw-/.md are autogenerated by scripts/docs-to-skills.py and must never be edited directly" and "Edit documentation under
docs/directory (never.agents/skills/nemoclaw-*/*.md) and regenerate skills withpython scripts/docs-to-skills.py".🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/skills/nemoclaw-deploy-remote/SKILL.md around lines 1 - 188, The PR edited an autogenerated skill file (.agents/skills/nemoclaw-deploy-remote/SKILL.md) which must not be changed directly; revert your edits to that file, make the documentation changes in the corresponding source under docs/ (the original markdown that feeds this skill), and regenerate the skill by running the generator script scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) so the updated content is produced into .agents/skills/nemoclaw-deploy-remote/SKILL.md.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.agents/skills/nemoclaw-reference/references/troubleshooting.md:
- Around line 98-109: This .agents/skills file is autogenerated and must not be
edited directly; instead update the original source docs file
docs/reference/troubleshooting.md with the desired content (e.g., the
Docker/Podman onboarding notes) and then regenerate the skill by running the
generator script scripts/docs-to-skills.py so it updates
.agents/skills/nemoclaw-reference/references/troubleshooting.md; do not commit
direct edits to the autogenerated file.
---
Outside diff comments:
In @.agents/skills/nemoclaw-deploy-remote/SKILL.md:
- Around line 1-188: The PR edited an autogenerated skill file
(.agents/skills/nemoclaw-deploy-remote/SKILL.md) which must not be changed
directly; revert your edits to that file, make the documentation changes in the
corresponding source under docs/ (the original markdown that feeds this skill),
and regenerate the skill by running the generator script
scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) so the
updated content is produced into .agents/skills/nemoclaw-deploy-remote/SKILL.md.
In @.agents/skills/nemoclaw-reference/references/commands.md:
- Around line 1-249: The PR edited an autogenerated skill file
(.agents/skills/nemoclaw-reference/references/commands.md) which must not be
modified directly; revert any changes to that file and instead update the
canonical source docs/reference/commands.md, then run the generation script
scripts/docs-to-skills.py (e.g., python scripts/docs-to-skills.py) to regenerate
.agents/skills/nemoclaw-reference/references/commands.md so the change flows
through the proper build step.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 17663b32-2b99-4714-8a2e-d06ddf690035
📒 Files selected for processing (11)
.agents/skills/nemoclaw-deploy-remote/SKILL.md.agents/skills/nemoclaw-get-started/SKILL.md.agents/skills/nemoclaw-overview/references/how-it-works.md.agents/skills/nemoclaw-reference/references/architecture.md.agents/skills/nemoclaw-reference/references/commands.md.agents/skills/nemoclaw-reference/references/troubleshooting.mdREADME.mdbin/lib/onboard.jsdocs/get-started/quickstart.mddocs/reference/commands.mdtest/onboard.test.js
✅ Files skipped from review due to trivial changes (5)
- .agents/skills/nemoclaw-overview/references/how-it-works.md
- .agents/skills/nemoclaw-get-started/SKILL.md
- docs/get-started/quickstart.md
- README.md
- .agents/skills/nemoclaw-reference/references/architecture.md
🚧 Files skipped from review as they are similar to previous changes (2)
- bin/lib/onboard.js
- test/onboard.test.js
|
Thanks @13ernkastel for tackling this — the confusion around OpenShell version coupling is a real problem and the intent here is solid. The compatibility map concept, the notice decomposition, and the test coverage are all well thought out. However, we can't merge this as-is because of a version accuracy and maintenance concern that runs through the entire PR. The version numbers are wrong and will go staleThe PR hardcodes NemoClaw 0.1.0 throughout, but the project is currently at v0.0.6 (see The hardcoded
These will be wrong the day after they merge. With daily version bumps, maintaining hardcoded version strings across this many files isn't sustainable. What nextWe are internally evaluating the best way to make version coupling discoverable and maintainable without hardcoding — something that stays accurate as releases advance. We'll follow up with a proposed approach on #1261. In the meantime, the non-version-specific parts of this PR (preferring nemoclaw onboard over direct openshell commands, the lifecycle guidance in how-it-works.md, the NEMOCLAW_DISABLE_DEVICE_AUTH documentation) are good contributions. Would you be open to splitting those out into a separate PR so we can land that guidance without the version-pinning bits? |
Signed-off-by: 13ernkastel <LennonCMJ@live.com>
|
@miyoungc thanks for the review. I updated this PR to follow the split you proposed. What changed in this update:
Current PR summary:
I also updated the PR title/body to match the reduced scope so it now reflects this as a partial step on Testing run for this update:
If you want, I can also split the remaining non-version-specific pieces into an even narrower docs-only PR, but this branch should now align with the version-agnostic scope you outlined. |
# Conflicts: # .agents/skills/nemoclaw-deploy-remote/SKILL.md # .agents/skills/nemoclaw-reference/references/commands.md
|
Thank you for incorporating the feedback! Approving and merging. |
## Summary This PR now carries only the maintainable, version-agnostic part of the original OpenShell compatibility work for `NVIDIA#1261`. It keeps the guidance that `nemoclaw onboard` is the supported entry point for creating or recreating NemoClaw-managed sandboxes, while removing the hardcoded NemoClaw/OpenShell version-coupling path that [miyoungc asked to split out](NVIDIA#1263 (comment)). The branch has also been refreshed onto current `main`, so the merge-conflict state is cleared. ## Related Issue Partially addresses NVIDIA#1261 ## Changes - Removed the hardcoded NemoClaw/OpenShell version-pair guidance from `README.md`, `docs/get-started/quickstart.md`, and `docs/reference/commands.md`. - Removed the runtime compatibility map and compatibility notice logic from `bin/lib/onboard.js`. - Removed the related version-specific tests from `test/onboard.test.js`. - Kept the version-agnostic lifecycle guidance that `nemoclaw onboard` is the supported operator entry point for NemoClaw-managed sandboxes. - Regenerated the affected `.agents/skills` output from the corresponding `docs/` sources instead of keeping direct generated-file edits. - Merged the latest `main` updates so the PR no longer shows merge conflicts. ## Type of Change - [ ] Code change for a new feature, bug fix, or refactor. - [x] Code change with doc updates. - [ ] Doc only. Prose changes without code sample modifications. - [ ] Doc only. Includes code sample changes. ## Testing - [ ] `npx prek run --all-files` passes (or equivalently `make check`). - [ ] `npm test` passes. - [ ] `make docs` builds without warnings. (for doc-only changes) - Focused validation for the reduced scope: - `npm run build:cli` - `npx vitest run test/onboard.test.js` (`78/78` passing) - `test-cli` still hits unrelated existing failures outside this PR scope in `src/lib/version.test.ts` and `test/install-preflight.test.js`. ## Timeline - `2026-04-01`: PR opened as `docs: clarify OpenShell compatibility guidance`, including docs, runtime compatibility mapping, and matching onboarding tests. - `2026-04-01`: CodeRabbit walkthrough and review raised doc phrasing and lifecycle-guidance consistency issues. - `2026-04-01`: `wscurran` linked related issues `NVIDIA#1261`, `NVIDIA#1260`, and `NVIDIA#1109` in the PR conversation. - `2026-04-06`: [`prekshivyas` posted a detailed review](NVIDIA#1263 (review)); the branch was updated to address those items and was [approved afterward](NVIDIA#1263 (review)). - `2026-04-06`: [CodeRabbit noted](NVIDIA#1263 (review)) that autogenerated `.agents/skills` output should be regenerated from `docs/` sources rather than hand-edited. - `2026-04-06`: [miyoungc requested splitting out](NVIDIA#1263 (comment)) the hardcoded version-pair work because it would drift quickly and should not ship across docs, code, and tests in that form. - `2026-04-07`: Commit `9f41f29` reduced the PR to the version-agnostic lifecycle guidance only, and the follow-up comment [here](NVIDIA#1263 (comment)) summarized that scope change. - `2026-04-07`: Commit `77fd9fb` resolved later merge conflicts and regenerated the affected generated-doc outputs. - `2026-04-07`: Commit `c29b821` merged current `main` again. GitHub now reports the PR as `BLOCKED` rather than `DIRTY`, so the merge-conflict state is cleared and only normal upstream gating remains. ## Checklist ### General - [ ] I have read and followed the [contributing guide](https://github.com/NVIDIA/NemoClaw/blob/main/CONTRIBUTING.md). - [ ] I have read and followed the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md). (for doc-only changes) ### Code Changes - [ ] Formatters applied — `npx prek run --all-files` auto-fixes formatting (or `make format` for targeted runs). - [x] Tests added or updated for new or changed behavior. - [x] No secrets, API keys, or credentials committed. - [x] Doc pages updated for any user-facing behavior changes (new commands, changed defaults, new features, bug fixes that contradict existing docs). ### Doc Changes - [ ] Follows the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md). Try running the `update-docs` agent skill to draft changes while complying with the style guide. For example, prompt your agent with "`/update-docs` catch up the docs for the new changes I made in this PR." - [ ] New pages include SPDX license header and frontmatter, if creating a new page. - [x] Cross-references and links verified. --- Signed-off-by: 13ernkastel <LennonCMJ@live.com> --------- Signed-off-by: 13ernkastel <LennonCMJ@live.com> Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Summary
This PR now carries only the maintainable, version-agnostic part of the original OpenShell compatibility work for
#1261.It keeps the guidance that
nemoclaw onboardis the supported entry point for creating or recreating NemoClaw-managed sandboxes, while removing the hardcoded NemoClaw/OpenShell version-coupling path that miyoungc asked to split out.The branch has also been refreshed onto current
main, so the merge-conflict state is cleared.Related Issue
Partially addresses #1261
Changes
README.md,docs/get-started/quickstart.md, anddocs/reference/commands.md.bin/lib/onboard.js.test/onboard.test.js.nemoclaw onboardis the supported operator entry point for NemoClaw-managed sandboxes..agents/skillsoutput from the correspondingdocs/sources instead of keeping direct generated-file edits.mainupdates so the PR no longer shows merge conflicts.Type of Change
Testing
npx prek run --all-filespasses (or equivalentlymake check).npm testpasses.make docsbuilds without warnings. (for doc-only changes)npm run build:clinpx vitest run test/onboard.test.js(78/78passing)test-clistill hits unrelated existing failures outside this PR scope insrc/lib/version.test.tsandtest/install-preflight.test.js.Timeline
2026-04-01: PR opened asdocs: clarify OpenShell compatibility guidance, including docs, runtime compatibility mapping, and matching onboarding tests.2026-04-01: CodeRabbit walkthrough and review raised doc phrasing and lifecycle-guidance consistency issues.2026-04-01:wscurranlinked related issues#1261,#1260, and#1109in the PR conversation.2026-04-06:prekshivyasposted a detailed review; the branch was updated to address those items and was approved afterward.2026-04-06: CodeRabbit noted that autogenerated.agents/skillsoutput should be regenerated fromdocs/sources rather than hand-edited.2026-04-06: miyoungc requested splitting out the hardcoded version-pair work because it would drift quickly and should not ship across docs, code, and tests in that form.2026-04-07: Commit9f41f29reduced the PR to the version-agnostic lifecycle guidance only, and the follow-up comment here summarized that scope change.2026-04-07: Commit77fd9fbresolved later merge conflicts and regenerated the affected generated-doc outputs.2026-04-07: Commitc29b821merged currentmainagain. GitHub now reports the PR asBLOCKEDrather thanDIRTY, so the merge-conflict state is cleared and only normal upstream gating remains.Checklist
General
Code Changes
npx prek run --all-filesauto-fixes formatting (ormake formatfor targeted runs).Doc Changes
update-docsagent skill to draft changes while complying with the style guide. For example, prompt your agent with "/update-docscatch up the docs for the new changes I made in this PR."Signed-off-by: 13ernkastel LennonCMJ@live.com